今天來講解昨天的程式碼,
首先是MainActivity.java的部份:
Bundle bundle = new Bundle();
...
intent.putExtras(bundle);
相依的Activity會附帶傳送額外資訊到新的Activity,這些額外訊息是靠著Intent物件來攜帶的,傳送Intent時,我們可以在其上附加一些訊息,比如說本例中我們從輸入介面中取出了的身高、體重值,要將身高、體重值傳送給Report Activity後作計算。這些附加在Intent上的訊息都儲存在bundle物件實體中,透過intent.putExtras(bundle)敘述,我們將bundle物件實體附加在intent物件實體上,隨著Intent送出而送出。
bundle.putString("KEY_HEIGHT", num_height.getText().toString());
bundle.putString("KEY_WEIGHT", num_weight.getText().toString());
ReportActivity.java的部份:
Bundle bundle = this.getIntent().getExtras();
透過this.getIntent()得到傳來的Intent物件實體,然後使用getExtras()函式取得附加在Intent上的bundle物件
double height = Double.parseDouble(bundle.getString("KEY_HEIGHT"))/100;
double weight = Double.parseDouble(bundle.getString("KEY_WEIGHT"));
透過識別符號取得儲存在bundle中的資料。由於我們傳參數過來的時候使用的是字串格式,所以要做一個型別轉換,將參數從字串轉換成雙倍精數浮點數
private Button.OnClickListener backtoMain = new Button.OnClickListener()
{
public void onClick(View v)
{
ReportActivity.this.finish();
}
};
當按下backMain按鈕元件後,結束ReportActivity,就會顯示原本的MainActivity
在這邊先休息一下,
明天開始進入番外篇,
稍微分享一下在Android活動(Activity)的生命週期,
這是蠻基本也是蠻重要的觀念.